内部类的好处及其种类

在一个类中可以声明类,叫做内部类。
作用:
实现了更好的封装,普通类的访问修饰符不能为private或者protected,而内部类可以,我们声明一个内部类声明为private时,只有外部类可以访问,更好的实现了隐藏内部类。

内部类可以继承或者实现其他类或者接口,而不受外部类的影响。内部类可以访问外部类的字段和方法,即使使用private修饰的,相反外部类不能直接访问内部类的成员。

可分为:成员内部类、局部内部类、匿名内部类、静态内部类。
  • 成员内部类:
1成员内部类可以看成是外部类的一个成员
2在成员内部类中无法声明静态成员,static final字段是个例外。我们知道加载类时,会先初始化静态成员,如果成员内部类有静态成员,那么内部类就会在外部类之前生成,而内部类是为外部类服务的,内部类在外部类之前就生成可能会脱离掌控。
3在实例化成员内部类时,成员内部类会持有一个外部类当前对象的引用,这样在成员内部类中就可以直接访问外部类的成员,即使是private修饰的。

  • 局部内部类
1局部内部类的使用和成员内部类的使用基本一致,只是局部内部类定义在外部类的方法中,就像局部变量一样,并不是外部类的成员。
2局部内部类在方法外是无法访问到的,但它的实例可以从方法中返回
3局部内部类也可以访问所在方法的局部变量、方法参数等,限制是局部变量或方法参数只有在声明为final时才能被访问。
  • 匿名内部类
可以把匿名内部类想象成是没有类名的局部内部类,匿名内部类有以下特点。
1、匿名内部类不能有构造器,匿名内部类没有类名,肯定无法声明构造器。
2、匿名内部类必须继承或实现一个接口,指定给new的类型为匿名类的超类型,匿名类不能有显示的extends或implements子句,也不能有任何修饰符。
3、匿名内部类和成员内部类、局部内部类一样,也不能声明静态成员。


  • 静态内部类
也称为嵌套类,声明它时需要用static修饰符,静态内部类不同于前三种内部类,静态内部类不会持有外部类当前对象的引用,所以在静态内部类中无法访问外部类的非静态成员,可以这么说,静态内部类不依赖于外部类。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值